import java.util.*;
public class Main {
    public static void main(String[] args) {

    }

    /**
     * 长度最小的子数组
     * @param target
     * @param nums
     * @return
     */
    public static int minSubArrayLen(int target, int[] nums) {
        int n=nums.length;
        int left=0,right=0;
        int sum=0;
        int len=Integer.MAX_VALUE;
        for(right=0;right<n;right++){
            sum+=nums[right];
            while(sum>=target){
                len=Math.min(right-left+1,len);
                sum-=nums[left++];
            }
        }
        if(len==Integer.MAX_VALUE){
            return 0;
        }else{
            return len;
        }
    }

    /**
     * 无重复字符的最长子串
     * @param s
     * @return
     */
    public static int lengthOfLongestSubstring(String s) {
        int n=s.length();
        int left=0,right=0;
        int len=0;
        char[] ss=s.toCharArray();
        int[] hash=new int[128];
        while(right<n){
            hash[ss[right]]++;
            while(hash[ss[right]]>1){
                hash[ss[left++]]--;
            }
            len=Math.max(right-left+1,len);
            right++;
        }
        return len;
    }
}